package junit;

import org.junit.*;

import fast.Buffer;
import static org.junit.Assert.* ;


public class BufferTest {
	
	private Buffer b;
	
	@Test
	public void test_add() {
						
		String[] testArray = new String[10];
		testArray[0]="10.1.0.1|10000|1|search|foo1";
		testArray[1]="10.1.0.2|10000|2|search|foo2";
		testArray[2]="10.1.0.3|10000|3|search|foo3";
		testArray[3]="10.1.0.4|10000|4|search|foo4";
		testArray[4]="10.1.0.5|10000|5|search|foo5";
		testArray[5]="10.1.0.6|10000|6|search|foo6";
		testArray[6]="10.1.0.7|10000|7|search|foo7";
		testArray[7]="10.1.0.8|10000|8|search|foo8";
		testArray[8]="10.1.0.9|10000|9|search|foo9";
		testArray[9]="10.1.0.10|10000|10|search|foo10";
				
		
		//add some records
		try {
			b.add( "10.1.0.1", 10000, 1, "search", "foo1");
			b.add( "10.1.0.2", 10000, 2, "search", "foo2");
			b.add( "10.1.0.3", 10000, 3, "search", "foo3");
			b.add( "10.1.0.4", 10000, 4, "search", "foo4");
			b.add( "10.1.0.5", 10000, 5, "search", "foo5");
			b.add( "10.1.0.6|10000|6|search|foo6");
			b.add( "10.1.0.7|10000|7|search|foo7");
			b.add( "10.1.0.8|10000|8|search|foo8");
			b.add( "10.1.0.9|10000|9|search|foo9");
			b.add( "10.1.0.10|10000|10|search|foo10");
		} catch (InterruptedException e) {
		}
					
		//empty the buffer
		try {
			for(int j=0; j < 10; j++) {
				
				System.out.println("Test: test_add " + j + " of 10");
				System.out.println("******************");
				
				assertTrue(testArray[j].equals(b.remove()));
				System.out.println("Test passed\n\n");
				
				
			}
						
		} catch (InterruptedException e) {
		}
		

	}
	
	@Before public void load_state(){
		b = new Buffer(10);
	}
}
